//4001:抓住那头牛
/*
描述
农夫知道一头牛的位置，想要抓住它。农夫和牛都位于数轴上，农夫起始位于点N(0<=N<=100000)，牛位于点K(0<=K<=100000)。农夫有两种移动方式：

1、从X移动到X-1或X+1，每次移动花费一分钟
2、从X移动到2*X，每次移动花费一分钟

假设牛没有意识到农夫的行动，站在原地不动。农夫最少要花多少时间才能抓住牛？


输入
两个整数，N和K
输出
一个整数，农夫抓到牛所要花费的最小分钟数
 */

#include<iostream>

using namespace std;

int main()
{
    int m,n;
    cin>>m>>n;
    int queue[100010];
    int visit[100010];
    for(int i=0;i<100010;i++)
        visit[i] = -1;
    int head = 0;
    int tail = 1;
    queue[0] = m;
    visit[m] = 0;
    while(visit[n]<0)
    {
        if(queue[head]-1>=0 && visit[queue[head]-1]<0)
        {
            queue[tail] = queue[head] - 1;
            visit[queue[head]-1] = visit[queue[head]] + 1;
            tail ++;
        }
        if(visit[queue[head]+1]<0)
        {
            queue[tail] = queue[head] + 1;
            visit[queue[head]+1] = visit[queue[head]] + 1;
            tail ++;
        }
        if(queue[head]*2<=100000 && visit[queue[head]*2]<0)
        {
            queue[tail] = queue[head] * 2;
            visit[queue[head]*2] = visit[queue[head]] + 1;
            tail ++;
        }
        head ++;
    }
    cout<<visit[n]<<endl;
    return 0;
}

//Runtime Error
